数组

创建数组方式

数组字面量方式

  var a = [];
  var a = [,,];(如果省略数组直接量的某个值,省略的元素将被赋予undefined值)
  a// [undefined × 2](元素个数=逗号个数)

兼容性:IE8以及更早版本中也可能会创建包含3项的数组。由于IE的实现与其他浏览器不一致,因此强烈建议不要使用上述写法

调用构造函数Array()

  var a = new Array();
  var a = new Array(10);//10代表数组的长度
  var a = new Array('10');//初始化化数组,数组长度为1      

数组读和写的方式

a[a.length-1]//访问数组最后一项

a[100] = 0//这时数组的长度为100,没有初始化的默认值为undefined

数组方法

1.栈方法(后进先出)

push()=>接收/任意数量的参数/,把它们逐渐添加到数组/末尾/,并返回修改后/数组的长度/(后进)
pop()=>数组末尾移除/最后一项/,减少数组的length值,然后返回/移除的项/(先出)

2.队列方法(先进先出)

unshift()=>接收任意数量的参数,把它们逐渐添加到数组/前端/,并返回修改后/数组的长度/(先进)
shift()=>移除数组中的/第一个项/,减少数组的length值,并返回/移除的项/(先出)

3.join()

所有元素都转化为"字符串"并连接在一起

             var a = [1,2,3];
             a.join();//"1,2,3"
             a.join('');//"123"
             a.join('-');//"1-2-3"

注意:如果不给join()方法传入任何值,或者给它传入undefined,则使用逗号作为分隔符。如果数组中某一项的值为null或undefined,调用方法后,以空字符串表示。

4.slice()

不会修改原数组,返回子数组(1个或2个参数,前闭后开[ )),获取子数组

   
    

             var a = [1,2,3,4,5];
             a.slice(0,3);//[1, 2, 3]
             a.slice(3);//[4, 5]
             a.slice(-3,-1);//[3, 4]
             a.slice(-10);//[1, 2, 3, 4, 5]

5.concat()

接收任意数量参数(参数所添加元素)基于当前数组中的所有项创建一个新数组,复制当前数组返回副本扩展原数组

        

             var a = [1,2,3];
             a.concat(4,5);//[1, 2, 3, 4, 5]
             a.concat([4,5]);//[1, 2, 3, 4, 5]
             a[1, 2, 3](a未改变)
             a.concat(4,[5,[6,7]]);//[1, 2, 3, 4, 5,[6,7]] 
           

6.sort()和reverse()

sort()

默认情况下sort()方法按升序排列数组项,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,即使数组中的每一项都是数值,sort()方法比较的也是字符串。
因此sort()方法可以接收一个比较函数作为参数,以便我们指定那个位置位于那个位置前面。比较函数接收两个参数,如果第一个参数位于第二个之前则返回一个负数,如果两个参数相等则返回0,如果第一个参数位于第二个参数之后则返回一个正数。由于比较函数通过返回一个小于0、等于0或大于0的值来影响排序结果,因此减法操作就可以适当的处理所有情况。

重排序方法(默认升序<0)==>
a.sort(function(value1,value2){return value1-value2})

      

            var a = ['ab','bc','abc'];
            a.sort()//['ab','abc','bc'];
          --------------------------------------------
            var a = [2,20,3];
            a.sort()//[2, 20, 3](20转换为字符串) 
          --------------------------------------------
            var a = ['ant','Bug','cat','Dog'];
            a.sort()//["Bug", "Dog", "ant", "cat"](大写字母排前面)
            a.sort(function(a,b){a.toLowerCase()<b.toLowerCase()})//["ant", "Bug", "cat", "Dog"]

reverse(): 反转数组项的顺序

7.splice()

数组中插入或删除元素的通用方法,参数可1个,2个或者多个(第一个参数指定了起始位置[,第二个参数指定了应从数组中删除元素个数,后面的指定了需插入元素),返回一个由删除元素组成的数组

第一个参数指定起始位置
第二个参数指定要删除的项数
第三个以及后面的参数要插入的项

删除

             var a = [1,2,3,4,5,6,7,8];
             a.splice(4);//[5, 6, 7, 8]
             a.splice(1,1);//[2]

插入

             a//[1, 3, 4]
             a.splice(1,0,'aa','bb');
             a//[1, "aa", "bb", 3, 4];

替换

var a = [0,1,2]
a.splice(1,1,'aa');//[1]
a//[0,'aa',2]

阿花和猫
2.3k 声望138 粉丝